home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / time.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  5KB  |  196 lines

  1. #ifndef _LINUX_TIME_H
  2. #define _LINUX_TIME_H
  3.  
  4. #include <linux/types.h>
  5.  
  6. #ifdef __KERNEL__
  7. #include <linux/seqlock.h>
  8. #endif
  9.  
  10. #ifndef _SYS_TIME_H
  11. #ifndef _STRUCT_TIMESPEC
  12. #ifndef __timespec_defined
  13. #define _STRUCT_TIMESPEC
  14. struct timespec {
  15.     time_t    tv_sec;        /* seconds */
  16.     long    tv_nsec;    /* nanoseconds */
  17. };
  18. #endif /* __timespec_defined */
  19. #endif /* _STRUCT_TIMESPEC */
  20.  
  21. #ifndef _STRUCT_TIMEVAL
  22. struct timeval {
  23.     time_t        tv_sec;        /* seconds */
  24.     suseconds_t    tv_usec;    /* microseconds */
  25. };
  26. #endif /* _STRUCT_TIMEVAL */
  27.  
  28. struct timezone {
  29.     int    tz_minuteswest;    /* minutes west of Greenwich */
  30.     int    tz_dsttime;    /* type of dst correction */
  31. };
  32.  
  33. #endif /* _SYS_TIME_H */
  34.  
  35. /* Parameters used to convert the timespec values */
  36. #ifndef USEC_PER_SEC
  37. #define USEC_PER_SEC (1000000L)
  38. #endif
  39.  
  40. #ifndef NSEC_PER_SEC
  41. #define NSEC_PER_SEC (1000000000L)
  42. #endif
  43.  
  44. #ifndef NSEC_PER_USEC
  45. #define NSEC_PER_USEC (1000L)
  46. #endif
  47.  
  48. #ifdef __KERNEL__
  49.  
  50. static __inline__ int timespec_equal(struct timespec *a, struct timespec *b) 
  51.     return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec);
  52.  
  53. /* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
  54.  * Assumes input in normal date format, i.e. 1980-12-31 23:59:59
  55.  * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
  56.  *
  57.  * [For the Julian calendar (which was used in Russia before 1917,
  58.  * Britain & colonies before 1752, anywhere else before 1582,
  59.  * and is still in use by some communities) leave out the
  60.  * -year/100+year/400 terms, and add 10.]
  61.  *
  62.  * This algorithm was first published by Gauss (I think).
  63.  *
  64.  * WARNING: this function will overflow on 2106-02-07 06:28:16 on
  65.  * machines were long is 32-bit! (However, as time_t is signed, we
  66.  * will already get problems at other places on 2038-01-19 03:14:08)
  67.  */
  68.  
  69. #ifndef _TIME_H
  70. static inline unsigned long
  71. mktime (unsigned int year, unsigned int mon,
  72.     unsigned int day, unsigned int hour,
  73.     unsigned int min, unsigned int sec)
  74. {
  75.     if (0 >= (int) (mon -= 2)) {    /* 1..12 -> 11,12,1..10 */
  76.         mon += 12;        /* Puts Feb last since it has leap day */
  77.         year -= 1;
  78.     }
  79.  
  80.     return (((
  81.         (unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
  82.             year*365 - 719499
  83.         )*24 + hour /* now have hours */
  84.       )*60 + min /* now have minutes */
  85.     )*60 + sec; /* finally seconds */
  86. }
  87. #endif
  88.  
  89. extern struct timespec xtime;
  90. extern struct timespec wall_to_monotonic;
  91. extern seqlock_t xtime_lock;
  92.  
  93. static inline unsigned long get_seconds(void)
  94.     return xtime.tv_sec;
  95. }
  96.  
  97. struct timespec current_kernel_time(void);
  98.  
  99. #define CURRENT_TIME (current_kernel_time())
  100. #define CURRENT_TIME_SEC ((struct timespec) { xtime.tv_sec, 0 })
  101.  
  102. extern void do_gettimeofday(struct timeval *tv);
  103. extern int do_settimeofday(struct timespec *tv);
  104. extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz);
  105. extern void clock_was_set(void); // call when ever the clock is set
  106. extern int do_posix_clock_monotonic_gettime(struct timespec *tp);
  107. extern long do_nanosleep(struct timespec *t);
  108. extern long do_utimes(char __user * filename, struct timeval * times);
  109. struct itimerval;
  110. extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue);
  111. extern int do_getitimer(int which, struct itimerval *value);
  112. extern void getnstimeofday (struct timespec *tv);
  113.  
  114. extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
  115.  
  116. static inline void
  117. set_normalized_timespec (struct timespec *ts, time_t sec, long nsec)
  118. {
  119.     while (nsec > NSEC_PER_SEC) {
  120.         nsec -= NSEC_PER_SEC;
  121.         ++sec;
  122.     }
  123.     while (nsec < 0) {
  124.         nsec += NSEC_PER_SEC;
  125.         --sec;
  126.     }
  127.     ts->tv_sec = sec;
  128.     ts->tv_nsec = nsec;
  129. }
  130.  
  131. #endif /* __KERNEL__ */
  132.  
  133. #define NFDBITS            __NFDBITS
  134.  
  135. #define FD_SETSIZE        __FD_SETSIZE
  136. #define FD_SET(fd,fdsetp)    __FD_SET(fd,fdsetp)
  137. #define FD_CLR(fd,fdsetp)    __FD_CLR(fd,fdsetp)
  138. #define FD_ISSET(fd,fdsetp)    __FD_ISSET(fd,fdsetp)
  139. #define FD_ZERO(fdsetp)        __FD_ZERO(fdsetp)
  140.  
  141. /*
  142.  * Names of the interval timers, and structure
  143.  * defining a timer setting.
  144.  */
  145. #define    ITIMER_REAL    0
  146. #define    ITIMER_VIRTUAL    1
  147. #define    ITIMER_PROF    2
  148.  
  149. #ifndef _TIME_H
  150. struct  itimerspec {
  151.         struct  timespec it_interval;    /* timer period */
  152.         struct  timespec it_value;       /* timer expiration */
  153. };
  154. #endif /* _TIME_H */
  155.  
  156. #ifndef _SYS_TIME_H
  157. struct    itimerval {
  158.     struct    timeval it_interval;    /* timer interval */
  159.     struct    timeval it_value;    /* current value */
  160. };
  161. #endif /* _SYS_TIME_H */
  162.  
  163.  
  164. /*
  165.  * The IDs of the various system clocks (for POSIX.1b interval timers).
  166.  */
  167. #define CLOCK_REALTIME          0
  168. #define CLOCK_MONOTONIC      1
  169. #define CLOCK_PROCESS_CPUTIME_ID 2
  170. #define CLOCK_THREAD_CPUTIME_ID     3
  171. #define CLOCK_REALTIME_HR     4
  172. #define CLOCK_MONOTONIC_HR      5
  173.  
  174. /*
  175.  * The IDs of various hardware clocks
  176.  */
  177.  
  178.  
  179. #define CLOCK_SGI_CYCLE 10
  180. #define MAX_CLOCKS 16
  181. #define CLOCKS_MASK  (CLOCK_REALTIME | CLOCK_MONOTONIC | \
  182.                      CLOCK_REALTIME_HR | CLOCK_MONOTONIC_HR)
  183. #define CLOCKS_MONO (CLOCK_MONOTONIC & CLOCK_MONOTONIC_HR)
  184.  
  185. /*
  186.  * The various flags for setting POSIX.1b interval timers.
  187.  */
  188.  
  189. #define TIMER_ABSTIME 0x01
  190.  
  191.  
  192. #endif
  193.